Combining Observables

Java Technologies - আরএক্সজাভা (RxJava)
129
129

RxJava-তে Combining Observables হল এমন একটি প্রক্রিয়া, যেখানে একাধিক Observable-এর ডেটা স্ট্রিমকে একত্রিত করা হয়। এটি বিশেষত তখন দরকার হয় যখন বিভিন্ন ডেটা উৎস থেকে ডেটা নিয়ে একটি সিঙ্গেল ডেটা স্ট্রিম তৈরি করতে হয়।


Combining Observables-এর জন্য ব্যবহৃত অপারেটরসমূহ:

1. merge()

  • একাধিক Observable-এর আউটপুটকে একত্রিত করে, যেগুলি সমান্তরালভাবে (concurrently) কাজ করে।
  • Sequence বজায় রাখে না।
Observable<String> observable1 = Observable.just("A", "B", "C");
Observable<String> observable2 = Observable.just("1", "2", "3");

Observable.merge(observable1, observable2)
    .subscribe(item -> System.out.println("Received: " + item));

আউটপুট (Sequence এলোমেলো হতে পারে):

Received: A
Received: 1
Received: B
Received: 2
Received: C
Received: 3

2. concat()

  • একাধিক Observable-এর আউটপুটকে একত্রিত করে, তবে Sequence বজায় রাখে
  • এক Observable শেষ হওয়ার পর অন্য Observable শুরু হয়।
Observable.concat(observable1, observable2)
    .subscribe(item -> System.out.println("Received: " + item));

আউটপুট:

Received: A
Received: B
Received: C
Received: 1
Received: 2
Received: 3

3. zip()

  • একাধিক Observable-এর আউটপুটকে পেয়ারিং করে একত্রিত করে।
  • যখন উভয় Observable থেকে ডেটা মেলে, তখন এটি কাজ করে।
Observable<String> observable1 = Observable.just("A", "B", "C");
Observable<String> observable2 = Observable.just("1", "2", "3");

Observable.zip(observable1, observable2, (item1, item2) -> item1 + item2)
    .subscribe(item -> System.out.println("Received: " + item));

আউটপুট:

Received: A1
Received: B2
Received: C3

4. combineLatest()

  • যখন এক Observable নতুন আইটেম প্রদান করে, তখন এটি অন্য Observable থেকে সর্বশেষ আইটেমের সাথে একত্রিত করে।
  • এটি সর্বশেষ পাওয়া ডেটা ব্যবহার করে।
Observable<String> observable1 = Observable.just("A", "B", "C");
Observable<String> observable2 = Observable.just("1", "2", "3");

Observable.combineLatest(
        observable1,
        observable2,
        (item1, item2) -> item1 + item2
    )
    .subscribe(item -> System.out.println("Received: " + item));

আউটপুট:

Received: C3

5. flatMap()

  • এক Observable থেকে প্রাপ্ত আইটেমগুলোকে নতুন Observable-এ রূপান্তরিত করে এবং সেগুলি সমান্তরালভাবে প্রকাশ করে।
  • Sequence বজায় রাখে না।
Observable<String> observable = Observable.just("A", "B", "C");

observable.flatMap(item -> Observable.just(item + "1", item + "2"))
    .subscribe(item -> System.out.println("Received: " + item));

আউটপুট (Sequence এলোমেলো হতে পারে):

Received: A1
Received: A2
Received: B1
Received: B2
Received: C1
Received: C2

6. switchMap()

  • flatMap()-এর মতোই কাজ করে, তবে প্রতিবার একটি নতুন Observable তৈরি হলে পুরোনো Observable বাতিল (cancel) করে।
  • নতুন ডেটা পাওয়া মাত্র কাজ শুরু করে।
Observable<String> observable = Observable.just("A", "B", "C");

observable.switchMap(item -> Observable.just(item + "1", item + "2"))
    .subscribe(item -> System.out.println("Received: " + item));

উদাহরণ: Combining Multiple Observables

একটি ব্যবহারিক উদাহরণ:

Observable<String> userObservable = Observable.just("User1", "User2");
Observable<Integer> scoreObservable = Observable.just(100, 200);

Observable.zip(userObservable, scoreObservable, (user, score) -> user + " scored " + score)
    .subscribe(result -> System.out.println(result));

আউটপুট:

User1 scored 100
User2 scored 200

Key Points:

  1. merge() এবং concat() একাধিক Observable একত্রিত করতে ব্যবহৃত হয়।
  2. zip() মিলে যাওয়া ডেটাগুলোকে জোড়ায় জোড়ায় একত্রিত করে।
  3. combineLatest() সর্বশেষ ডেটা ব্যবহার করে কাজ করে।
  4. flatMap() এবং switchMap() নতুন Observable তৈরি করে এবং সমান্তরাল কাজ করে।

RxJava-তে Combining Observables-এর সঠিক ব্যবহার অ্যাপ্লিকেশনের কার্যক্ষমতা এবং ডেটা প্রসেসিং ক্ষমতা বাড়াতে সাহায্য করে। এটি অনেক সময় একইসাথে একাধিক ডেটা উৎস থেকে ডেটা নিয়ে কাজ করার জন্য অপরিহার্য।

Content added By

Observables কে Combine করার জন্য বিভিন্ন Operators

143
143

RxJava-তে Observables-কে combine বা একত্রিত করার জন্য বিভিন্ন operators ব্যবহার করা হয়। এই operators বিভিন্ন data streams একত্রিত করে বা তাদের সম্পর্কিত ডেটা প্রসেস করতে সাহায্য করে।


Observables Combine করার জন্য গুরুত্বপূর্ণ Operators

1. merge()

  • ব্যবহার:
    • একাধিক Observables-এর ডেটা একত্রিত করে একটি single Observable তৈরি করে।
    • Observables-এর ডেটা sequential বা parallel যে কোনোভাবে emit হতে পারে।
  • উদাহরণ:
import io.reactivex.Observable;

public class MergeExample {
    public static void main(String[] args) {
        Observable<String> observable1 = Observable.just("A", "B", "C");
        Observable<String> observable2 = Observable.just("1", "2", "3");

        Observable.merge(observable1, observable2)
            .subscribe(item -> System.out.println("Received: " + item));
    }
}

আউটপুট:

Received: A  
Received: B  
Received: C  
Received: 1  
Received: 2  
Received: 3  

2. zip()

  • ব্যবহার:
    • দুটি বা আরও বেশি Observables থেকে corresponding items একত্রিত করে একটি নতুন ডেটা তৈরি করে।
    • এটি index-এর ভিত্তিতে Observables-এর ডেটা মিলিত করে।
  • উদাহরণ:
import io.reactivex.Observable;

public class ZipExample {
    public static void main(String[] args) {
        Observable<String> observable1 = Observable.just("A", "B", "C");
        Observable<String> observable2 = Observable.just("1", "2", "3");

        Observable.zip(observable1, observable2, (item1, item2) -> item1 + item2)
            .subscribe(item -> System.out.println("Received: " + item));
    }
}

আউটপুট:

Received: A1  
Received: B2  
Received: C3  

3. concat()

  • ব্যবহার:
    • Observables-এর ডেটা sequentially emit করে।
    • একটি Observable শেষ হওয়ার পর আরেকটি Observable এর ডেটা emit শুরু হয়।
  • উদাহরণ:
import io.reactivex.Observable;

public class ConcatExample {
    public static void main(String[] args) {
        Observable<String> observable1 = Observable.just("A", "B", "C");
        Observable<String> observable2 = Observable.just("1", "2", "3");

        Observable.concat(observable1, observable2)
            .subscribe(item -> System.out.println("Received: " + item));
    }
}

আউটপুট:

Received: A  
Received: B  
Received: C  
Received: 1  
Received: 2  
Received: 3  

4. combineLatest()

  • ব্যবহার:
    • সর্বশেষ emit হওয়া ডেটাগুলো একত্রিত করে একটি নতুন Observable তৈরি করে।
    • Observables-এর ডেটা স্ট্রিম asynchronous হলে এটি উপকারী।
  • উদাহরণ:
import io.reactivex.Observable;
import java.util.concurrent.TimeUnit;

public class CombineLatestExample {
    public static void main(String[] args) throws InterruptedException {
        Observable<String> observable1 = Observable.interval(1, TimeUnit.SECONDS)
            .map(tick -> "A" + tick);
        Observable<String> observable2 = Observable.interval(2, TimeUnit.SECONDS)
            .map(tick -> "B" + tick);

        Observable.combineLatest(observable1, observable2, (item1, item2) -> item1 + "-" + item2)
            .subscribe(item -> System.out.println("Received: " + item));

        Thread.sleep(5000); // Sleep to allow the example to run
    }
}

আউটপুট (সম্ভাব্য):

Received: A0-B0  
Received: A1-B0  
Received: A1-B1  
Received: A2-B1  
Received: A3-B1  

5. flatMap()

  • ব্যবহার:
    • একটি Observable-এর প্রতিটি ডেটা আইটেম থেকে নতুন Observables তৈরি করে এবং সেগুলো merge করে।
    • এটি asynchronous ডেটা স্ট্রিমের জন্য উপযুক্ত।
  • উদাহরণ:
import io.reactivex.Observable;

public class FlatMapExample {
    public static void main(String[] args) {
        Observable<String> observable = Observable.just("A", "B", "C");

        observable
            .flatMap(item -> Observable.just(item + "1", item + "2"))
            .subscribe(result -> System.out.println("Received: " + result));
    }
}

আউটপুট:

Received: A1  
Received: A2  
Received: B1  
Received: B2  
Received: C1  
Received: C2  

6. switchMap()

  • ব্যবহার:
    • একটি Observable-এর প্রতিটি আইটেম থেকে নতুন Observable তৈরি করে, কিন্তু পুরনো Observable-এর ডেটা discard করে।
    • সাধারণত asynchronous calls-এর জন্য ব্যবহৃত হয়।
  • উদাহরণ:
import io.reactivex.Observable;

public class SwitchMapExample {
    public static void main(String[] args) throws InterruptedException {
        Observable<String> observable = Observable.just("A", "B", "C");

        observable
            .switchMap(item -> Observable.just(item + "1").delay(1, TimeUnit.SECONDS))
            .subscribe(result -> System.out.println("Received: " + result));

        Thread.sleep(4000); // Sleep to allow the example to run
    }
}

আউটপুট (সম্ভাব্য):

Received: C1

উপসংহার

Observables-কে combine করার জন্য বিভিন্ন operators ব্যবহার করা হয়, এবং প্রতিটি operator-এর নিজস্ব ব্যবহারক্ষেত্র রয়েছে।

  • merge(): Parallel streams combine করার জন্য।
  • concat(): Sequential streams combine করার জন্য।
  • zip(): Corresponding items combine করার জন্য।
  • combineLatest(): সর্বশেষ emitted ডেটা combine করার জন্য।
  • flatMap(): Nested asynchronous operations-এর জন্য।
  • switchMap(): নতুন Observable-এ switch করার জন্য।

যথাযথ operator বেছে নেওয়া আপনার ডেটা স্ট্রিমের প্রয়োজনের উপর নির্ভর করে।

Content added By

merge(), zip(), combineLatest(), এবং concat() এর ব্যবহার

102
102

RxJava-তে ডেটা স্ট্রিমগুলোকে বিভিন্নভাবে ম্যানিপুলেট এবং একত্রিত করার জন্য শক্তিশালী অপারেটর রয়েছে। merge(), zip(), combineLatest(), এবং concat() এর মতো অপারেটর ব্যবহার করে একাধিক Observable থেকে ডেটা একত্রিত বা প্রসেস করা যায়। প্রতিটির কার্যপ্রণালী এবং ব্যবহার ভিন্ন।


1. merge()

  • উপযুক্ত কাজ:
    দুটি বা তার বেশি Observable থেকে ইমিট হওয়া ডেটাকে একত্রে এক স্ট্রিমে নিয়ে আসে।
  • কাজের প্রক্রিয়া:
    Observables সমান্তরাল (parallel) কাজ করে এবং ইমিশনের অনুক্রম বজায় রাখে না।
  • ব্যবহার:
    Observable.merge()

উদাহরণ:

Observable<String> obs1 = Observable.just("A", "B", "C");
Observable<String> obs2 = Observable.just("1", "2", "3");

Observable.merge(obs1, obs2)
    .subscribe(System.out::println);

আউটপুট:

A
B
C
1
2
3

2. zip()

  • উপযুক্ত কাজ:
    একাধিক Observable থেকে ইমিশনগুলিকে তাদের সামঞ্জস্যপূর্ণ জোড়া হিসেবে একত্রিত করে।
  • কাজের প্রক্রিয়া:
    Observables থেকে প্রতিটি ইমিশন নিয়ে একটি কম্বাইন্ড আউটপুট তৈরি করে।
  • ব্যবহার:
    Observable.zip()

উদাহরণ:

Observable<String> obs1 = Observable.just("A", "B", "C");
Observable<String> obs2 = Observable.just("1", "2", "3");

Observable.zip(obs1, obs2, (item1, item2) -> item1 + item2)
    .subscribe(System.out::println);

আউটপুট:

A1
B2
C3

3. combineLatest()

  • উপযুক্ত কাজ:
    দুটি Observable থেকে সর্বশেষ ইমিট হওয়া মান নিয়ে কম্বাইন্ড আউটপুট তৈরি করে।
  • কাজের প্রক্রিয়া:
    Observables থেকে যেকোনো একটি ইমিট হলে সর্বশেষ মানগুলোর সাথে নতুন আউটপুট তৈরি হয়।
  • ব্যবহার:
    Observable.combineLatest()

উদাহরণ:

Observable<String> obs1 = Observable.just("A", "B");
Observable<String> obs2 = Observable.just("1", "2", "3");

Observable.combineLatest(obs1, obs2, (item1, item2) -> item1 + item2)
    .subscribe(System.out::println);

আউটপুট:

B1
B2
B3

4. concat()

  • উপযুক্ত কাজ:
    একাধিক Observable-কে ধারাবাহিকভাবে (sequentially) একত্রিত করে।
  • কাজের প্রক্রিয়া:
    একটি Observable শেষ হওয়ার পর অন্যটি শুরু হয়।
  • ব্যবহার:
    Observable.concat()

উদাহরণ:

Observable<String> obs1 = Observable.just("A", "B", "C");
Observable<String> obs2 = Observable.just("1", "2", "3");

Observable.concat(obs1, obs2)
    .subscribe(System.out::println);

আউটপুট:

A
B
C
1
2
3

তুলনামূলক বিশ্লেষণ:

অপারেটরকাজের ধরনউপযোগিতা
merge()Observables থেকে ডেটা একত্রিত করে (সমান্তরাল)।বিভিন্ন উৎস থেকে ডেটা একত্রে দেখানোর জন্য।
zip()Observables থেকে ডেটা জোড়া তৈরি করে।একাধিক Observable এর ডেটা নির্দিষ্টভাবে মিলানোর জন্য।
combineLatest()Observables থেকে সর্বশেষ ডেটা একত্রিত করে।সর্বশেষ আপডেট হওয়া ডেটার উপর নির্ভর করে আউটপুট তৈরি করতে।
concat()Observables ধারাবাহিকভাবে একত্রিত করে।নির্দিষ্ট অনুক্রমে ডেটা স্ট্রিম পরিচালনা করতে।

ব্যবহার ক্ষেত্র:

  1. merge(): রিয়েল-টাইম ইভেন্ট (যেমন, নেটওয়ার্ক এবং সেন্সর ডেটা) একত্রিত করার জন্য।
  2. zip(): ডেটা পেয়ারিং, যেমন দুটি API থেকে ডেটা মিলিয়ে একটি রেসপন্স তৈরি করা।
  3. combineLatest(): UI-তে ডেটার সর্বশেষ মান প্রদর্শন।
  4. concat(): ধাপে ধাপে কাজ সম্পন্ন করতে বা নির্দিষ্ট সিকোয়েন্স মেনে ডেটা প্রসেসিং।

প্রতিটি অপারেটর নির্দিষ্ট কাজের জন্য ব্যবহৃত হয়। প্রয়োজন অনুযায়ী সঠিক অপারেটর নির্বাচন করলে RxJava কার্যক্ষম এবং কার্যকরী হয়।

Content added By

Multiple Observable একত্রে ম্যানেজমেন্ট

90
90

RxJava-তে Multiple Observables একত্রে ম্যানেজ করার জন্য বেশ কয়েকটি পদ্ধতি এবং অপারেটর আছে। এগুলো ব্যবহার করে আপনি বিভিন্ন Observable থেকে ডেটা সংগ্রহ করতে, একত্রিত করতে বা নির্ধারিত ক্রমানুসারে পরিচালনা করতে পারেন।


1. merge(): Observables একত্রে যুক্ত করা

merge() অপারেটর ব্যবহার করে একাধিক Observable কে একত্রে মিশ্রিত করা যায়।

  • ডেটা যেকোনো Observable থেকে আসতে পারে, কিন্তু এটি ডেটার এমিশন পারালাল ভাবে হয়।
  • Concurrency-friendly।

উদাহরণ:

Observable<String> observable1 = Observable.just("A", "B", "C");
Observable<String> observable2 = Observable.just("1", "2", "3");

Observable.merge(observable1, observable2)
    .subscribe(item -> System.out.println("Received: " + item));

আউটপুট:

Received: A  
Received: B  
Received: C  
Received: 1  
Received: 2  
Received: 3  

2. concat(): Observables সিরিয়াল ম্যানেজমেন্ট

concat() অপারেটর Observables কে সিরিয়াল ক্রমে একত্রিত করে।

  • ডেটা প্রথম Observable শেষ হওয়ার পরপরই দ্বিতীয় Observable থেকে এমিট হয়।

উদাহরণ:

Observable<String> observable1 = Observable.just("A", "B", "C");
Observable<String> observable2 = Observable.just("1", "2", "3");

Observable.concat(observable1, observable2)
    .subscribe(item -> System.out.println("Received: " + item));

আউটপুট:

Received: A  
Received: B  
Received: C  
Received: 1  
Received: 2  
Received: 3  

3. zip(): Observables এর ডেটা জোড়া করা

zip() অপারেটর ব্যবহার করে একাধিক Observable থেকে ডেটা জোড়া বানিয়ে এমিট করা হয়।

  • প্রতিটি Observable এর ডেটা সিরিয়াল ক্রমে জোড়া হয়।

উদাহরণ:

Observable<String> observable1 = Observable.just("A", "B", "C");
Observable<String> observable2 = Observable.just("1", "2", "3");

Observable.zip(
    observable1,
    observable2,
    (item1, item2) -> item1 + item2 // Combine logic
)
.subscribe(item -> System.out.println("Received: " + item));

আউটপুট:

Received: A1  
Received: B2  
Received: C3  

4. combineLatest(): সর্বশেষ ডেটা ব্যবহার

combineLatest() অপারেটর Observables এর সর্বশেষ এমিট হওয়া ডেটা একত্রিত করে।

  • যেকোন Observable নতুন ডেটা এমিট করলে, এটি সমস্ত Observables এর সর্বশেষ ডেটা ব্যবহার করে।

উদাহরণ:

Observable<String> observable1 = Observable.just("A", "B", "C");
Observable<String> observable2 = Observable.just("1", "2", "3");

Observable.combineLatest(
    observable1,
    observable2,
    (item1, item2) -> item1 + item2 // Combine logic
)
.subscribe(item -> System.out.println("Received: " + item));

আউটপুট:

Received: C3  

5. flatMap(): Observables এর ডেটা সমান্তরালভাবে প্রক্রিয়া করা

flatMap() অপারেটর এক Observable এর ডেটা ব্যবহার করে নতুন Observables তৈরি করে এবং সবগুলোকে একত্রে মিশ্রিত করে।

উদাহরণ:

Observable<String> observable = Observable.just("A", "B", "C");

observable
    .flatMap(item -> Observable.just(item + "1", item + "2"))
    .subscribe(item -> System.out.println("Received: " + item));

আউটপুট:

Received: A1  
Received: A2  
Received: B1  
Received: B2  
Received: C1  
Received: C2  

6. switchMap(): ডেটা স্যুইচ করা

switchMap() অপারেটর Observables এর প্রতিটি নতুন ডেটা জন্য পুরানো Observable কে প্রতিস্থাপন করে।

উদাহরণ:

Observable<String> observable = Observable.just("A", "B", "C");

observable
    .switchMap(item -> Observable.just(item + "1", item + "2"))
    .subscribe(item -> System.out.println("Received: " + item));

আউটপুট:

Received: C1  
Received: C2  

7. startWith(): Observable-এর আগে ডেটা এমিট করা

startWith() অপারেটর ব্যবহার করে Observable এর ডেটার আগে প্রাথমিক ডেটা এমিট করা যায়।

উদাহরণ:

Observable<String> observable = Observable.just("B", "C");

observable
    .startWith("A")
    .subscribe(item -> System.out.println("Received: " + item));

আউটপুট:

Received: A  
Received: B  
Received: C  

8. amb(): প্রথম Observable নির্বাচন করা

amb() অপারেটর ব্যবহার করে যে Observable প্রথম ডেটা এমিট করবে, সেটি বেছে নেওয়া হয়।

উদাহরণ:

Observable<String> observable1 = Observable.just("A").delay(1, TimeUnit.SECONDS);
Observable<String> observable2 = Observable.just("B");

Observable.ambArray(observable1, observable2)
    .subscribe(item -> System.out.println("Received: " + item));

আউটপুট:

Received: B  

উপসংহার:

RxJava-তে Multiple Observables পরিচালনার জন্য অনেক অপারেটর রয়েছে। কোন অপারেটর ব্যবহার করবেন, তা নির্ভর করে আপনার প্রয়োজনীয়তা এবং ডেটার আচরণের উপর।

  • merge() এবং concat() ব্যবহার করা হয় Observables যুক্ত করতে।
  • zip() এবং combineLatest() ব্যবহার করা হয় ডেটা একত্রিত করতে।
  • flatMap() এবং switchMap() ব্যবহৃত হয় ডেটার ট্রান্সফরমেশনের জন্য।

এই অপারেটরগুলি Reactive Programming কে আরও শক্তিশালী এবং কার্যকর করে তোলে।

Content added By

উদাহরণ সহ Combining Operators

114
114

RxJava তে, Combining Operators বা সংমিলন অপারেশনগুলো ব্যবহার করা হয় একাধিক Observable থেকে ডেটা একত্রিত করতে। এই অপারেশনগুলির মাধ্যমে একাধিক স্ট্রিমকে একত্র করা সম্ভব হয়, যা অ্যাসিঙ্ক্রোনাস বা ইভেন্ট-ভিত্তিক অ্যাপ্লিকেশনগুলোর জন্য উপকারী। বিভিন্ন ধরনের combining operators রয়েছে যেমন merge(), concat(), zip(), ইত্যাদি।


Merge Operator

merge() অপারেশনটি একাধিক Observable স্ট্রিমকে একত্র করে একটি সিঙ্গেল Observable তে পরিণত করে। এটি একাধিক স্ট্রিমকে একত্রিত করে এবং তাদের ডেটাকে এক সাথে প্রেরণ করে।

উদাহরণ:

Observable<Integer> observable1 = Observable.just(1, 2, 3);
Observable<Integer> observable2 = Observable.just(4, 5, 6);

Observable<Integer> merged = Observable.merge(observable1, observable2);

merged.subscribe(System.out::println);

এই কোডে, observable1 এবং observable2 এর ডেটাগুলো একত্রিত হয়ে আউটপুট হিসেবে প্রদর্শিত হবে। আউটপুট হতে পারে: 1, 4, 2, 5, 3, 6 (যেহেতু ম্যানেজমেন্ট ইভেন্ট-ড্রিভেন হওয়ায় যে স্ট্রিমটি প্রথমে প্রস্তুত হবে, তা সবার আগে আসে)।


Concat Operator

concat() অপারেশনটি একাধিক Observable কে একে একে (sequentially) একত্র করে। এটি প্রথম Observable এর সমস্ত ডেটা সম্পন্ন হলে পরবর্তী Observable থেকে ডেটা পাঠাতে শুরু করে।

উদাহরণ:

Observable<Integer> observable1 = Observable.just(1, 2, 3);
Observable<Integer> observable2 = Observable.just(4, 5, 6);

Observable<Integer> concatenated = Observable.concat(observable1, observable2);

concatenated.subscribe(System.out::println);

এখানে, observable1 এবং observable2 এর ডেটাগুলো সম্পূর্ণভাবে একে একে প্রদর্শিত হবে। আউটপুট হবে: 1, 2, 3, 4, 5, 6


Zip Operator

zip() অপারেশনটি দুটি বা তার বেশি Observable এর ডেটা একত্রিত করে এবং একটি নির্দিষ্ট ফাংশন প্রয়োগ করে নতুন একটি ডেটা তৈরি করে। এটি একে একে (pair-wise) মানগুলোর সংমিলন ঘটায়। এটি সবচেয়ে বেশি ব্যবহৃত হয় যখন একাধিক স্ট্রিমের মান একসাথে প্রয়োজন হয়।

উদাহরণ:

Observable<Integer> observable1 = Observable.just(1, 2, 3);
Observable<String> observable2 = Observable.just("A", "B", "C");

Observable<String> zipped = Observable.zip(observable1, observable2, (num, letter) -> num + letter);

zipped.subscribe(System.out::println);

এখানে, observable1 এবং observable2 এর মান একত্রিত হয়ে নতুন একটি স্ট্রিং তৈরি হচ্ছে। আউটপুট হবে: 1A, 2B, 3C


CombineLatest Operator

combineLatest() অপারেশনটি দুটি বা তার বেশি Observable থেকে সর্বশেষ আপডেট হওয়া মানগুলো একত্রিত করে একটি নতুন মান তৈরি করে। এটি মূলত একাধিক স্ট্রিমের সর্বশেষ ডেটা থেকে একটি নতুন ফলাফল তৈরি করতে ব্যবহৃত হয়।

উদাহরণ:

Observable<Integer> observable1 = Observable.just(1, 2, 3);
Observable<String> observable2 = Observable.just("A", "B");

Observable<String> combined = Observable.combineLatest(
    observable1, observable2, 
    (num, letter) -> num + letter
);

combined.subscribe(System.out::println);

এখানে, observable1 এবং observable2 থেকে সর্বশেষ মান দুটি একত্রিত করে নতুন একটি ফলাফল তৈরি হবে। আউটপুট হবে: 3B (যেহেতু observable2 এর শেষ মান ছিল "B" এবং observable1 এর সর্বশেষ মান ছিল 3)।


উপসংহার

RxJava তে Combining Operators বিভিন্ন Observable এর ডেটা একত্রিত করতে সাহায্য করে, যা একাধিক স্ট্রিমের সাথে কাজ করার সময় কার্যকরী হয়ে ওঠে। merge(), concat(), zip(), এবং combineLatest() এর মতো অপারেশনগুলো ডেটার সঠিক সমন্বয় ও প্রক্রিয়াকরণে সাহায্য করে, যা অ্যাসিঙ্ক্রোনাস অ্যাপ্লিকেশনগুলোতে গুরুত্বপূর্ণ ভূমিকা রাখে।


Content added By
Promotion